昨日に引き続き、NTです!
昨日はGmailのフィルタ機能を使用したラベル付けをご紹介しました。
本日はその続編となりますので、
GASを使ってラベル付けする方法
を紹介していきます。
私自身の環境ではきちんと動作することを確認できましたが、
Gmailとスプレッドシートを読み書きする権限を必要とするため、
実行はあくまでもご自身の自己責任でお願い致します。
1. 自身のGoogleアカウント内でGoogleスプレッドシートとGoogle Apps Scriptを作成してください
※作成方法はググるとたくさん出てくるので、割愛させていただきます。
2. 作成したスプレッドシート内に以下のようにA列に条件をB列に付けたいラベル名を入れてください
※シート名は「setting」にしてないと動作しません
3. 追記したスプレッドシートのURLからスプレッドシートIDを取得してください
※この後GASで使用します
※URLを加工済みなので存在しないスプレッドシートIDとなります
4. GASを開いて以下のようにソースコードをコピペしてください
5. 実行する関数を「main」を選択して「実行」を押してください
初回実行時のみ実行権限確認の画面が出ますが、権限内容を確認してから許可を押してください。
実行が終了すると実行ログにに以下の様なログが出力されます。
Gmailを見に行くとスプレッドシート内で設定したquery(抽出条件)のメールに対してラベルが付いていると思います。
Gmailのラベル付け自動化 Google Apps Scriptソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// ラベル設定関数 function _set_labels(query, label_name) { // 抽出条件(引数のquery)にてGmail検索 const threads = GmailApp.search(query); // 指定したラベル名(引数のlabel_name)が無かったら、ラベルを作成 const label = GmailApp.getUserLabelByName(label_name) || GmailApp.createLabel(label_name); // 抽出条件にヒットしたメール(スレッド)を回す for(const thread of threads) { // 1スレッドずつラベルを設定 thread.addLabel(label); } } function main() { // スプレッドシートのIDを指定 const shid = '1RwtQDlZeTdno8XLpS-nM3yo5lZaWwC30'; // スプレッドシートのsettingシートを取得 const sh = SpreadsheetApp.openById(shid).getSheetByName('setting'); // settingシートの2行目以降のA列、B列を取得 const values = sh.getRange(2, 1, sh.getLastRow()-1, 2).getValues(); // 行数分回して各queryとラベル名でラベル設定関数を実行 for(const value of values) { // 1行分をログ出力 Logger.log(value); // 配列内のqueryとラベル名を元にラベル設定関数実行 // _set_labels(value[0], value[1]); } } |
このようにGoogleスプレッドシートに記載しておいて、
GASからスプレッドシートを読み込みに行くようにしておけば、
修正も簡単ですし、他のメンバーとも共有が出来たりしますので、
発想次第で無限に活用方法が見出せます。
ご紹介したこの方法ですが、
個人でも使ってるGmailでも実装しておりとても便利だと感じているので、
今回ご紹介させていただきました。
簡単に設定、実行できますのでご興味ある方は試してみていただければと思います。
今年も全日程埋まり、無事にAdvent Calendar 2022が完了しました。
また来年も開催出来たらと思っておりますので、お楽しみにください。
それでは良いお年を~!